File Handling with NIO

Java Technologies - জাভা নিও (Java Nio)
194
194

Java NIO (New Input/Output) ফাইল সিস্টেমের সাথে কাজ করার জন্য শক্তিশালী এবং উন্নত API প্রদান করে। Java NIO File Handling এর মাধ্যমে আপনি ফাইল পড়া, লেখা, ফাইলের তথ্য অ্যাক্সেস করা এবং ফাইল পরিচালনা সহজে এবং দ্রুত করতে পারেন। NIO তে ফাইলের সাথে কাজ করতে কিছু নতুন ফিচার এবং ক্লাস রয়েছে, যা Java IO থেকে আরও উন্নত এবং কার্যকরী।

এখানে আমরা Java NIO তে ফাইল হ্যান্ডলিংয়ের কিছু গুরুত্বপূর্ণ কৌশল এবং কোড উদাহরণ দেখবো।


Java NIO তে File Handling

Java NIO File Handling এর জন্য প্রধানত Path, Files, FileChannel, এবং ByteBuffer ক্লাস ব্যবহার করা হয়। এগুলো একসাথে ফাইলের সঙ্গে কাজ করার জন্য শক্তিশালী ইন্টারফেস প্রদান করে।

১. Files এবং Paths API (Java 7 এ পরিচিত)

Java 7 এ Path এবং Files API গুলি চালু করা হয়, যা ফাইল পরিচালনা করার জন্য আরও সহজ এবং কার্যকরী পদ্ধতি প্রদান করে।

Path অবজেক্ট তৈরি করা

import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("path/to/file.txt");
System.out.println(path);

এখানে Paths.get() ব্যবহার করে একটি ফাইলের Path অবজেক্ট তৈরি করা হয়েছে। Path হল Java NIO তে ফাইলের অবস্থান চিহ্নিত করার জন্য ব্যবহৃত প্রধান ক্লাস।

২. ফাইল পড়া (Reading a File)

Java NIO তে ফাইল পড়ার জন্য Files.readAllLines() বা Files.readAllBytes() পদ্ধতি ব্যবহার করা যায়।

Example: ফাইল থেকে সব লাইন পড়া

import java.nio.file.*;
import java.io.IOException;
import java.util.List;

public class ReadFileExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("path/to/file.txt");
        List<String> lines = Files.readAllLines(path);
        for (String line : lines) {
            System.out.println(line);
        }
    }
}

এখানে, Files.readAllLines() ব্যবহার করে ফাইলের সব লাইন পড়া হচ্ছে এবং প্রতিটি লাইন কনসোলে আউটপুট করা হচ্ছে।

Example: ফাইল থেকে বাইট পড়া

import java.nio.file.*;
import java.io.IOException;

public class ReadBytesExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("path/to/file.txt");
        byte[] data = Files.readAllBytes(path);
        for (byte b : data) {
            System.out.print((char) b);
        }
    }
}

এখানে, Files.readAllBytes() ব্যবহার করে ফাইলের সব বাইট পড়া হচ্ছে এবং তাদের ক্যারেক্টার রূপে কনসোলে প্রদর্শন করা হচ্ছে।

৩. ফাইল লেখা (Writing to a File)

Java NIO তে ফাইল লেখার জন্য Files.write() পদ্ধতি ব্যবহার করা হয়।

Example: ফাইলে ডেটা লেখা

import java.nio.file.*;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("path/to/output.txt");
        String content = "This is a sample text written to the file.";
        
        Files.write(path, content.getBytes());
        System.out.println("Data written to file.");
    }
}

এখানে, Files.write() ব্যবহার করে একটি ফাইলে ডেটা লেখা হচ্ছে।

৪. FileChannel এর মাধ্যমে ফাইল হ্যান্ডলিং

FileChannel ব্যবহার করে ফাইলের মধ্যে ডেটা পাঠানো এবং গ্রহণ করা যেতে পারে, এবং এটি উচ্চ কার্যক্ষমতা এবং দ্রুত I/O অপারেশন প্রদান করে।

Example: FileChannel দিয়ে ফাইল থেকে ডেটা পড়া

import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class FileChannelExample {
    public static void main(String[] args) throws IOException {
        RandomAccessFile file = new RandomAccessFile("path/to/file.txt", "r");
        FileChannel channel = file.getChannel();

        ByteBuffer buffer = ByteBuffer.allocate(1024);
        channel.read(buffer);
        buffer.flip();

        while (buffer.hasRemaining()) {
            System.out.print((char) buffer.get());
        }

        file.close();
    }
}

এখানে, FileChannel এবং ByteBuffer ব্যবহার করে ফাইল থেকে ডেটা পড়া হয়েছে। FileChannel ফাইলের সাথে যুক্ত একটি চ্যানেল তৈরি করে, এবং ByteBuffer ডেটা ধারণ করে।

Example: FileChannel দিয়ে ফাইলে ডেটা লেখা

import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class WriteToFileWithChannel {
    public static void main(String[] args) throws IOException {
        RandomAccessFile file = new RandomAccessFile("path/to/output.txt", "rw");
        FileChannel channel = file.getChannel();

        String content = "This is written using FileChannel.";
        ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());

        channel.write(buffer);
        file.close();
    }
}

এখানে, FileChannel এবং ByteBuffer ব্যবহার করে একটি ফাইলে ডেটা লেখা হয়েছে।

৫. ফাইলের বৈশিষ্ট্য পরীক্ষা (Checking File Properties)

Java NIO Files API ব্যবহার করে ফাইলের বৈশিষ্ট্য পরীক্ষা করা যায়, যেমন ফাইলটি কী রকম, এটি কখন তৈরি হয়েছিল, এটি একটি ডিরেক্টরি কিনা ইত্যাদি।

Example: ফাইলের বৈশিষ্ট্য পরীক্ষা

import java.nio.file.*;
import java.io.IOException;

public class FilePropertiesExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("path/to/file.txt");
        System.out.println("File exists: " + Files.exists(path));
        System.out.println("Is Directory: " + Files.isDirectory(path));
        System.out.println("File Size: " + Files.size(path));
    }
}

এখানে, Files.exists(), Files.isDirectory(), এবং Files.size() ব্যবহার করে ফাইলের বিভিন্ন বৈশিষ্ট্য পরীক্ষা করা হচ্ছে।


Java NIO তে File Handling এর সুবিধা

১. উচ্চ কার্যক্ষমতা

Java NIO চ্যানেল এবং বাফার ব্যবহার করে দ্রুত I/O অপারেশন সম্পাদন করতে সাহায্য করে। এটি Java IO থেকে অনেক বেশি কার্যকর এবং দ্রুত।

২. Non-blocking I/O সমর্থন

NIO নন-ব্লকিং I/O সমর্থন করে, যার মাধ্যমে আপনি একাধিক I/O অপারেশন একই সময়ে পরিচালনা করতে পারেন। এটি অ্যাপ্লিকেশন পারফরম্যান্স এবং স্কেলেবিলিটি বৃদ্ধি করে।

৩. সহজ ফাইল ম্যানিপুলেশন

Java NIO Paths এবং Files API দিয়ে ফাইল ম্যানিপুলেশন খুবই সহজ এবং কম কোডে করা যায়। ফাইল পড়া, লেখা, এবং ফাইলের বৈশিষ্ট্য পরীক্ষা করা সবই সহজ হয়ে যায়।

৪. FileChannel এর মাধ্যমে দক্ষ I/O অপারেশন

FileChannel এবং ByteBuffer ব্যবহার করে আপনি দ্রুত এবং কার্যকরভাবে ফাইল I/O অপারেশন করতে পারবেন, বিশেষত বড় ফাইলের ক্ষেত্রে।


Java NIO একটি অত্যন্ত শক্তিশালী এবং কার্যকরী ফাইল সিস্টেম API যা ফাইল পরিচালনা করার জন্য দ্রুত এবং উন্নত পদ্ধতি প্রদান করে। Files, Path, FileChannel, এবং ByteBuffer এর মাধ্যমে Java NIO তে ফাইল হ্যান্ডলিং করা সহজ এবং দ্রুত হয়। Java NIO ফাইল সিস্টেম অপারেশনগুলোর পারফরম্যান্স বৃদ্ধি করে এবং উন্নত I/O অপারেশন সমর্থন করে, বিশেষ করে যখন একাধিক ফাইল অপারেশন বা বড় ফাইলের সঙ্গে কাজ করা হয়।


Content added By

Files এবং Paths এর ধারণা

125
125

Java NIO (New Input/Output), যা Java SE 1.4 তে প্রবর্তিত হয়, Java প্রোগ্রামিং ভাষায় ফাইল এবং ডিরেক্টরি ম্যানিপুলেশন, I/O অপারেশন এবং নেটওয়ার্কিংয়ের জন্য একটি নতুন API সরবরাহ করে। Java NIO তে Files এবং Paths হল এমন দুটি মৌলিক ক্লাস যা ফাইল সিস্টেমের সাথে কাজ করার জন্য ব্যবহার করা হয়। এগুলি Java NIO এর প্রধান অংশ এবং ফাইল এবং ডিরেক্টরি সম্পর্কিত বিভিন্ন অপারেশন সহজ করে তোলে।


Files এবং Paths এর ধারণা

১. Path (পাথ)

Path হল একটি নতুন ক্লাস যা Java NIO তে ফাইল এবং ডিরেক্টরি পথের প্রতিনিধিত্ব করে। এটি java.nio.file প্যাকেজের একটি অংশ এবং এটি java.nio.file.Paths এবং java.nio.file.Path ক্লাস দ্বারা ব্যবহৃত হয়।

Path ক্লাসটি একটি নির্দিষ্ট ফাইল বা ডিরেক্টরির অবস্থান নির্দেশ করে এবং এটি OS নিরপেক্ষ ফাইল পথের জন্য সমর্থন প্রদান করে। এর মানে হল যে, Path ব্যবহার করে আপনি প্ল্যাটফর্মের উপর ভিত্তি না রেখে ফাইল এবং ডিরেক্টরি অ্যাক্সেস করতে পারবেন।

Path তৈরি করার উদাহরণ:

import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("C:/Users/John/Documents/file.txt");

এখানে Paths.get() মেথডটি একটি নির্দিষ্ট পথের একটি Path অবজেক্ট তৈরি করে।

২. Files (ফাইলস)

Files ক্লাসটি ফাইল এবং ডিরেক্টরি সম্পর্কিত বিভিন্ন কাজ সম্পাদন করার জন্য বেশ কিছু স্ট্যাটিক মেথড প্রদান করে। এটি Java NIO এর মধ্যে একটি গুরুত্বপূর্ণ অংশ এবং এটি ফাইলের সাথে কাজ করার সময় ফাইল তৈরি, ফাইলের কন্টেন্ট রিড করা, ফাইল কপি করা, ফাইলের সাইজ চেক করা এবং আরও অনেক অপারেশন করতে সহায়তা করে।

Files ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:

  • Files.exists(Path path): নির্দিষ্ট পাথের ফাইল বা ডিরেক্টরি রয়েছে কি না, তা পরীক্ষা করে।
  • Files.readAllLines(Path path): একটি ফাইলের সমস্ত লাইন একটি লিস্টে পড়ে।
  • Files.copy(Path source, Path target): একটি ফাইল কপি করে একটি নতুন লোকেশনে।
  • Files.delete(Path path): নির্দিষ্ট পাথের ফাইল বা ডিরেক্টরি ডিলিট করে।
  • Files.createDirectories(Path dir): নতুন ডিরেক্টরি তৈরি করে।

Files ব্যবহার করে ফাইলের অস্তিত্ব পরীক্ষা করার উদাহরণ:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("C:/Users/John/Documents/file.txt");

if (Files.exists(path)) {
    System.out.println("ফাইলটি রয়েছে!");
} else {
    System.out.println("ফাইলটি নেই!");
}

এখানে Files.exists() মেথডটি চেক করে যে, নির্দিষ্ট ফাইল বা ডিরেক্টরি বিদ্যমান কিনা।

৩. Paths ক্লাস

Paths ক্লাসটি Path অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এটি Paths.get() মেথডের মাধ্যমে একটি স্ট্রিং পাথকে Path অবজেক্টে রূপান্তরিত করে।

Paths.get() মেথডের উদাহরণ:

import java.nio.file.Paths;
import java.nio.file.Path;

Path path = Paths.get("C:/Users/John/Documents");
System.out.println("Path: " + path);

এখানে, Paths.get() পদ্ধতি স্ট্রিং আর্গুমেন্ট হিসেবে ফাইল পাথ নেয় এবং সেটি একটি Path অবজেক্টে কনভার্ট করে।


Java NIO তে Files এবং Paths এর সুবিধা

১. OS নিরপেক্ষ ফাইল পরিচালনা

Java NIO তে Path এবং Files ব্যবহার করে আপনি প্ল্যাটফর্ম নিরপেক্ষভাবে ফাইলের সাথে কাজ করতে পারেন, অর্থাৎ, Windows, Linux, এবং MacOS এর মধ্যে পার্থক্য ছাড়াই ফাইল সিস্টেম অপারেশন করতে পারবেন।

২. উচ্চ পারফরম্যান্স I/O অপারেশন

Java NIO ক্লাসগুলি (যেমন Path, Files) নন-ব্লকিং I/O এবং Asynchronous I/O এর জন্য উন্নত পারফরম্যান্স প্রদান করে, যা Java I/O এর তুলনায় দ্রুত I/O অপারেশন করতে সহায়তা করে।

৩. ফাইল এবং ডিরেক্টরি অপারেশন সহজ করা

Java NIO এর মাধ্যমে ফাইল কপি করা, ফাইল রিড এবং রাইট করা, ডিরেক্টরি তৈরি করা, ফাইল ডিলিট করা এবং ফাইলের পাথ পরিচালনা করার কাজগুলি অনেক সহজ হয়ে যায়। এই সকল কাজগুলি Files এবং Path ক্লাসের মাধ্যমে কম কোডের মাধ্যমে সম্পন্ন করা যায়।


Java NIO তে Files এবং Paths ক্লাসগুলি ফাইল এবং ডিরেক্টরি পরিচালনার জন্য অত্যন্ত কার্যকরী সরঞ্জাম সরবরাহ করে। Path ফাইলের পাথের প্রতিনিধিত্ব করে এবং Files ক্লাসটি ফাইল সিস্টেমের সাথে সম্পর্কিত বিভিন্ন কাজ করতে ব্যবহৃত হয়। এই দুটি ক্লাস Java NIO তে ফাইল এবং ডিরেক্টরি ম্যানিপুলেশনকে সহজ, দ্রুত এবং দক্ষ করে তোলে, বিশেষত যখন বড় আকারের I/O অপারেশন করা হয়।


Content added By

Files Class এর বিভিন্ন মেথড (create, copy, move, delete, ইত্যাদি)

109
109

Java NIO (New I/O) এর Files ক্লাসটি ফাইল সিস্টেম অপারেশন পরিচালনা করতে একটি সহজ এবং কার্যকরী পদ্ধতি প্রদান করে। এটি java.nio.file প্যাকেজে অন্তর্ভুক্ত এবং ফাইল তৈরি, কপি, মুভ, ডিলিট সহ বিভিন্ন ফাইল সম্পর্কিত কাজের জন্য প্রয়োজনীয় মেথড সরবরাহ করে। Files ক্লাসটি NIO এর মাধ্যমে ফাইল সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি আধুনিক এবং উন্নত API প্রদান করে।

এখানে Files ক্লাসের বিভিন্ন মেথডের ব্যবহার আলোচনা করা হলো, যা ফাইল সিস্টেমে বিভিন্ন অপারেশন যেমন ফাইল তৈরি, কপি, মুভ, ডিলিট এবং অন্যান্য কাজ করতে সাহায্য করবে।


Files ক্লাসের প্রধান মেথডগুলি

১. createFile(Path path, FileAttribute<?>... attrs)

এই মেথডটি একটি নতুন ফাইল তৈরি করে। যদি ফাইলটি ইতিমধ্যেই উপস্থিত থাকে, তবে এটি একটি FileAlreadyExistsException ছুঁড়ে ফেলে।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;

Path path = Paths.get("newFile.txt");
try {
    Files.createFile(path);
    System.out.println("File created successfully!");
} catch (IOException e) {
    System.out.println("Error creating file: " + e.getMessage());
}

এই উদাহরণে, newFile.txt নামে একটি নতুন ফাইল তৈরি করা হচ্ছে।

২. copy(Path source, Path target, CopyOption... options)

এই মেথডটি একটি ফাইল বা ডিরেক্টরি কপি করে। আপনি কপি অপশন ব্যবহার করতে পারেন যেমন REPLACE_EXISTING যদি লক্ষ্য ফাইলটি পূর্বে উপস্থিত থাকে।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;

Path source = Paths.get("sourceFile.txt");
Path target = Paths.get("targetFile.txt");
try {
    Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
    System.out.println("File copied successfully!");
} catch (IOException e) {
    System.out.println("Error copying file: " + e.getMessage());
}

এই উদাহরণে, sourceFile.txt ফাইলটি targetFile.txt এ কপি করা হচ্ছে এবং যদি লক্ষ্য ফাইলটি ইতিমধ্যেই থাকে তবে তা প্রতিস্থাপিত হবে।

৩. move(Path source, Path target, CopyOption... options)

এই মেথডটি একটি ফাইল বা ডিরেক্টরি মুভ করে। আপনি StandardCopyOption.REPLACE_EXISTING অপশন ব্যবহার করতে পারেন যদি লক্ষ্য ফাইলটি ইতিমধ্যেই থাকে।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;

Path source = Paths.get("sourceFile.txt");
Path target = Paths.get("movedFile.txt");
try {
    Files.move(source, target, StandardCopyOption.REPLACE_EXISTING);
    System.out.println("File moved successfully!");
} catch (IOException e) {
    System.out.println("Error moving file: " + e.getMessage());
}

এখানে, sourceFile.txt ফাইলটি movedFile.txt নামে স্থানান্তরিত হচ্ছে।

৪. delete(Path path)

এই মেথডটি একটি ফাইল বা ডিরেক্টরি মুছে ফেলে। যদি ফাইলটি না থাকে, তবে এটি একটি NoSuchFileException ছুঁড়ে ফেলে।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;

Path path = Paths.get("fileToDelete.txt");
try {
    Files.delete(path);
    System.out.println("File deleted successfully!");
} catch (IOException e) {
    System.out.println("Error deleting file: " + e.getMessage());
}

এখানে, fileToDelete.txt ফাইলটি মুছে ফেলা হচ্ছে।

৫. deleteIfExists(Path path)

এই মেথডটি একটি ফাইল বা ডিরেক্টরি মুছে ফেলে, তবে যদি ফাইলটি না থাকে, তাহলে এটি কোন এক্সসেপশন ছুঁড়ে না।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;

Path path = Paths.get("fileToDeleteIfExists.txt");
try {
    if (Files.deleteIfExists(path)) {
        System.out.println("File deleted successfully!");
    } else {
        System.out.println("File did not exist.");
    }
} catch (IOException e) {
    System.out.println("Error deleting file: " + e.getMessage());
}

এখানে, fileToDeleteIfExists.txt ফাইলটি মুছে ফেলা হচ্ছে যদি এটি উপস্থিত থাকে।

৬. exists(Path path, LinkOption... options)

এই মেথডটি চেক করে যে নির্দিষ্ট পাথের ফাইল বা ডিরেক্টরি উপস্থিত আছে কিনা। এটি একটি বুলিয়ান মান প্রদান করে।

উদাহরণ:

import java.nio.file.*;

Path path = Paths.get("checkFile.txt");
if (Files.exists(path)) {
    System.out.println("File exists.");
} else {
    System.out.println("File does not exist.");
}

এখানে, checkFile.txt ফাইলটির অস্তিত্ব যাচাই করা হচ্ছে।

৭. readAllLines(Path path, Charset cs)

এই মেথডটি একটি ফাইলের সমস্ত লাইন পড়ে এবং একটি List<String> রিটার্ন করে। এটি Charset অপশন গ্রহণ করে, যার মাধ্যমে আপনি ফাইলের এনকোডিং নির্ধারণ করতে পারেন।

উদাহরণ:

import java.nio.file.*;
import java.nio.charset.*;
import java.io.IOException;
import java.util.List;

Path path = Paths.get("readFile.txt");
try {
    List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
    for (String line : lines) {
        System.out.println(line);
    }
} catch (IOException e) {
    System.out.println("Error reading file: " + e.getMessage());
}

এখানে, readFile.txt ফাইলের সমস্ত লাইন পড়া হচ্ছে এবং তা কনসোলে আউটপুট করা হচ্ছে।

৮. write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)

এই মেথডটি একটি ফাইলতে লাইন লেখা শুরু করে এবং ফাইলের এনকোডিং নির্ধারণ করার জন্য Charset অপশন গ্রহণ করে।

উদাহরণ:

import java.nio.file.*;
import java.nio.charset.*;
import java.io.IOException;
import java.util.Arrays;

Path path = Paths.get("writeFile.txt");
try {
    Files.write(path, Arrays.asList("Hello", "Java NIO"), StandardCharsets.UTF_8, StandardOpenOption.CREATE);
    System.out.println("Data written successfully!");
} catch (IOException e) {
    System.out.println("Error writing file: " + e.getMessage());
}

এখানে, "Hello" এবং "Java NIO" লাইন দুটি writeFile.txt ফাইলে লেখা হচ্ছে।


Java NIO তে Files ক্লাসের বিভিন্ন মেথড ব্যবহার করে আপনি ফাইল সম্পর্কিত বিভিন্ন কাজ খুব সহজেই করতে পারেন, যেমন ফাইল তৈরি, কপি, মুভ, ডিলিট, এবং ডিরেক্টরি পরিচালনা। createFile, copy, move, delete, এবং readAllLines এর মতো মেথডগুলি Java NIO API কে আরো শক্তিশালী এবং কার্যকরী করে তোলে। এগুলি উচ্চ পারফরম্যান্স ফাইল সিস্টেম অপারেশন পরিচালনা করতে ব্যবহৃত হয়, বিশেষত বড় ডেটা সেট এবং অ্যাসিনক্রোনাস ফাইল অপারেশনগুলির জন্য।


Content added By

Directory Traversing এবং File Metadata Access

121
121

Java NIO (New Input/Output) একটি শক্তিশালী API যা উন্নত ফাইল I/O এবং ডিরেক্টরি ট্র্যাভার্সিং সরবরাহ করে। java.nio.file প্যাকেজটি Java NIO এর অংশ এবং এটি ডিরেক্টরি ট্র্যাভার্সিং, ফাইল মেটাডেটা অ্যাক্সেস, এবং ফাইল অপারেশন সম্পাদন করার জন্য আধুনিক এবং কার্যকরী উপায় প্রদান করে। Java NIO এর মাধ্যমে আপনি দ্রুত এবং কার্যকরভাবে ফাইল সিস্টেম পরিচালনা করতে পারেন।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Java NIO ব্যবহার করে ডিরেক্টরি ট্র্যাভার্সিং এবং ফাইল মেটাডেটা অ্যাক্সেস করা যায়।


Directory Traversing (ডিরেক্টরি ট্র্যাভার্সিং)

Java NIO তে Directory Traversing করতে Files.walk() বা Files.walkFileTree() মেথড ব্যবহার করা হয়। এগুলি আপনাকে একটি ডিরেক্টরির সমস্ত ফাইল এবং সাবডিরেক্টরি অনুসন্ধান করতে সহায়ক।

Files.walk() ব্যবহার করা

Files.walk() মেথড ব্যবহার করে আপনি একটি ডিরেক্টরির সমস্ত ফাইল এবং সাবডিরেক্টরি রিকার্সিভভাবে ট্র্যাভার্স করতে পারেন।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;
import java.util.stream.Stream;

public class DirectoryTraversingExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("C:/exampleDirectory");

        try (Stream<Path> paths = Files.walk(path)) {
            paths.filter(Files::isRegularFile)
                 .forEach(System.out::println);
        }
    }
}

এখানে, Files.walk() মেথডটি C:/exampleDirectory ডিরেক্টরির সব ফাইল এবং সাবডিরেক্টরি ট্র্যাভার্স করছে। filter(Files::isRegularFile) ব্যবহার করে শুধুমাত্র ফাইলগুলি প্রদর্শন করা হচ্ছে, ডিরেক্টরি নয়।

Files.walkFileTree() ব্যবহার করা

Files.walkFileTree() ব্যবহার করলে, আপনি একটি কাস্টম ভিজিটর ক্লাস তৈরি করে ডিরেক্টরি ট্র্যাভার্সিং করতে পারবেন, যা আরও নির্দিষ্ট কাজ যেমন ফাইল ফিল্টারিং বা কাস্টম কার্যকলাপ করার সুযোগ দেয়।

উদাহরণ:

import java.nio.file.*;
import java.io.IOException;
import java.nio.file.attribute.BasicFileAttributes;

public class DirectoryWalkFileTreeExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("C:/exampleDirectory");

        Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                System.out.println(file);
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
                return FileVisitResult.CONTINUE;
            }
        });
    }
}

এখানে, Files.walkFileTree() এবং SimpleFileVisitor ব্যবহার করে C:/exampleDirectory ডিরেক্টরির সব ফাইল ট্র্যাভার্স করা হচ্ছে এবং visitFile() মেথডে প্রতিটি ফাইলের পাথ প্রিন্ট করা হচ্ছে।


File Metadata Access (ফাইল মেটাডেটা অ্যাক্সেস)

Java NIO তে File Metadata অ্যাক্সেস করতে Files এবং BasicFileAttributes ব্যবহার করা হয়। ফাইলের মেটাডেটা অন্তর্ভুক্ত হতে পারে ফাইলের সাইজ, তৈরি হওয়ার তারিখ, অবস্থা (Readable, Writable), এবং অন্যান্য বৈশিষ্ট্য। Java NIO এর মাধ্যমে আপনি সহজেই ফাইলের মেটাডেটা অ্যাক্সেস করতে পারেন।

Files.readAttributes() ব্যবহার করা

Files.readAttributes() মেথড ব্যবহার করে ফাইলের মেটাডেটা এক্সেস করা হয়। এটি ফাইলের বিভিন্ন বৈশিষ্ট্য যেমন সাইজ, তৈরি হওয়া তারিখ, অনুমতি (permissions) ইত্যাদি ফিরিয়ে দেয়।

উদাহরণ:

import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.io.IOException;

public class FileMetadataAccessExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("C:/exampleDirectory/exampleFile.txt");

        BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);

        System.out.println("File size: " + attrs.size() + " bytes");
        System.out.println("Creation time: " + attrs.creationTime());
        System.out.println("Last modified time: " + attrs.lastModifiedTime());
        System.out.println("Is directory: " + attrs.isDirectory());
        System.out.println("Is regular file: " + attrs.isRegularFile());
    }
}

এখানে, Files.readAttributes() মেথড ব্যবহার করে exampleFile.txt ফাইলের মেটাডেটা এক্সেস করা হচ্ছে, যেমন সাইজ, তৈরি হওয়ার সময়, শেষ পরিবর্তনের সময়, এবং এটি একটি ফাইল কি না, ডিরেক্টরি কি না, তা যাচাই করা হচ্ছে।

Files.getOwner() ব্যবহার করা

এছাড়া, ফাইলের মালিকানা সম্পর্কিত তথ্যও Files.getOwner() মেথডের মাধ্যমে পাওয়া যায়।

উদাহরণ:

import java.nio.file.*;
import java.nio.file.attribute.UserPrincipal;
import java.io.IOException;

public class FileOwnerExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("C:/exampleDirectory/exampleFile.txt");

        UserPrincipal owner = Files.getOwner(path);
        System.out.println("File owner: " + owner.getName());
    }
}

এখানে, Files.getOwner() মেথড ব্যবহার করে exampleFile.txt ফাইলের মালিকের নাম প্রিন্ট করা হচ্ছে।


Java NIO তে Directory Traversing এবং File Metadata Access অত্যন্ত গুরুত্বপূর্ণ ফিচারগুলি। Files.walk() এবং Files.walkFileTree() ব্যবহার করে ডিরেক্টরি এবং সাবডিরেক্টরি ট্র্যাভার্স করা সহজ, এবং Files.readAttributes() বা Files.getOwner() এর মাধ্যমে ফাইলের মেটাডেটা সহজেই অ্যাক্সেস করা যায়। Java NIO এর এই ক্ষমতাগুলি বিশেষভাবে বড় আকারের ডেটাসেট, ফাইল সিস্টেম পরিচালনা এবং ইফিশিয়েন্ট I/O অপারেশন করতে সাহায্য করে।


Content added By

উদাহরণ সহ File এবং Directory ম্যানেজমেন্ট

98
98

Java NIO (Non-blocking I/O) ফাইল এবং ডিরেক্টরি ম্যানেজমেন্টের জন্য একটি শক্তিশালী API প্রদান করে। এটি Java 7 তে java.nio.file প্যাকেজের মাধ্যমে পরিচিত হয়েছে, যা ফাইল এবং ডিরেক্টরি অপারেশনকে আরও কার্যকরী এবং স্কেলেবল করে তোলে। NIO API দিয়ে আপনি ফাইল তৈরি, ফাইল পড়া, ফাইল লেখা, ডিরেক্টরি তৈরি, ডিরেক্টরি লিস্টিং এবং অন্যান্য ফাইল-সংক্রান্ত অপারেশন করতে পারবেন।

এখানে আমরা Java NIO এর মাধ্যমে ফাইল এবং ডিরেক্টরি ম্যানেজমেন্টের কিছু সাধারণ কাজ দেখব, উদাহরণসহ।


১. ফাইল তৈরি এবং লেখার উদাহরণ

Java NIO ব্যবহার করে ফাইল তৈরি এবং ফাইলের মধ্যে ডেটা লেখা খুব সহজ। এখানে Files ক্লাসের createFile() এবং write() মেথড ব্যবহার করা হয়েছে।

উদাহরণ: ফাইল তৈরি এবং লেখা

import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");

        // ফাইল তৈরি এবং লেখা
        String content = "Hello, this is a file created with NIO!";
        
        try {
            // ফাইল তৈরি করা এবং লেখা
            Files.write(path, content.getBytes(StandardCharsets.UTF_8));
            System.out.println("File created and data written successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, Files.write() মেথড দিয়ে example.txt ফাইলে ডেটা লেখা হয়েছে। যদি ফাইলটি আগে থেকে না থাকে, তবে এটি তৈরি হবে।


২. ফাইল পড়ার উদাহরণ

Java NIO তে Files.readAllLines() বা Files.readAllBytes() ব্যবহার করে ফাইল থেকে ডেটা পড়া যেতে পারে। নিচে readAllLines() ব্যবহার করা হয়েছে।

উদাহরণ: ফাইল পড়া

import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.io.IOException;
import java.util.List;

public class FileReadExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");

        try {
            // ফাইল থেকে সমস্ত লাইন পড়া
            List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, Files.readAllLines() ফাংশনটি example.txt ফাইলের সমস্ত লাইন পড়বে এবং সেগুলোকে প্রিন্ট করবে।


৩. ফাইলের তথ্য যাচাই করা

Java NIO তে Files ক্লাসের সাহায্যে ফাইলের প্রপার্টি যাচাই করা যেতে পারে, যেমন ফাইলটি কোন ধরনের (ফাইল, ডিরেক্টরি, অথবা একটি লিঙ্ক), ফাইলের সাইজ, অনুমতি ইত্যাদি।

উদাহরণ: ফাইলের তথ্য যাচাই করা

import java.nio.file.*;
import java.io.IOException;

public class FileInfoExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");

        try {
            // ফাইলের প্রপার্টি যাচাই করা
            System.out.println("Is file? " + Files.isRegularFile(path));
            System.out.println("Is directory? " + Files.isDirectory(path));
            System.out.println("File size: " + Files.size(path) + " bytes");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, Files.isRegularFile() এবং Files.isDirectory() মেথডগুলো ব্যবহার করে ফাইল এবং ডিরেক্টরি যাচাই করা হয়েছে, এবং Files.size() ব্যবহার করে ফাইলের সাইজ জানা গেছে।


৪. ডিরেক্টরি তৈরি এবং ফাইল ম্যানেজমেন্ট

Java NIO তে ডিরেক্টরি তৈরি, ডিরেক্টরি থেকে ফাইল লিস্টিং, এবং ফাইল ম্যানেজমেন্ট খুব সহজ। নিচে Files.createDirectory() এবং Files.list() ব্যবহার করা হয়েছে।

উদাহরণ: ডিরেক্টরি তৈরি এবং ফাইল লিস্টিং

import java.nio.file.*;
import java.io.IOException;

public class DirectoryManagementExample {
    public static void main(String[] args) {
        Path dirPath = Paths.get("myDirectory");

        try {
            // নতুন ডিরেক্টরি তৈরি করা
            Files.createDirectory(dirPath);
            System.out.println("Directory created successfully!");

            // ডিরেক্টরির মধ্যে সমস্ত ফাইল লিস্টিং
            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dirPath)) {
                for (Path entry : stream) {
                    System.out.println(entry.getFileName());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, প্রথমে Files.createDirectory() ব্যবহার করে myDirectory নামে একটি নতুন ডিরেক্টরি তৈরি করা হয়েছে। তারপর DirectoryStream ব্যবহার করে ডিরেক্টরির মধ্যে ফাইলগুলোর নাম লিস্ট করা হয়েছে।


৫. ফাইল এবং ডিরেক্টরি মুছে ফেলা

Java NIO তে ফাইল এবং ডিরেক্টরি মুছে ফেলার জন্য Files.delete() মেথড ব্যবহার করা হয়। ডিরেক্টরি মুছে ফেলার জন্য ডিরেক্টরি যদি খালি না থাকে, তবে Files.delete() ব্যর্থ হবে।

উদাহরণ: ফাইল এবং ডিরেক্টরি মুছে ফেলা

import java.nio.file.*;
import java.io.IOException;

public class DeleteFileExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");

        try {
            // ফাইল মুছে ফেলা
            Files.delete(path);
            System.out.println("File deleted successfully!");

            // ডিরেক্টরি মুছে ফেলা
            Path dirPath = Paths.get("myDirectory");
            Files.delete(dirPath);
            System.out.println("Directory deleted successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, Files.delete() ব্যবহার করে প্রথমে ফাইল এবং পরে ডিরেক্টরি মুছে ফেলা হয়েছে।


Java NIO ফাইল এবং ডিরেক্টরি ম্যানেজমেন্টের জন্য অত্যন্ত শক্তিশালী টুল প্রদান করে, যা I/O অপারেশনকে আরও দক্ষ, স্কেলেবল, এবং সহজ করে তোলে। Files এবং Path ক্লাসের মাধ্যমে আপনি ফাইল তৈরি, ফাইল পড়া, লেখা, ডিরেক্টরি তৈরি, ফাইলের তথ্য যাচাই, এবং মুছে ফেলা সহ বিভিন্ন ফাইল-সংক্রান্ত কাজ করতে পারবেন। Java NIO এর সাহায্যে ফাইল এবং ডিরেক্টরি ম্যানেজমেন্ট খুব সহজ, দ্রুত এবং সিস্টেমের পারফরম্যান্সে প্রভাব না ফেলে কার্যকরভাবে করা সম্ভব।


Content added By
Promotion